Cluster (k8s)
k8sが動作するための基盤のようなもの
構成要素
= Master Node
gpt-5.icon
💡 簡単な例で見る:PodをデプロイするYAML
以下の YAML は、Nginx サーバーを動かす最小構成の例です。
code:yaml
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
🔍 説明
apiVersion: 使用する Kubernetes API のバージョン。
kind: このYAMLが何を定義しているか(ここでは Pod)。
metadata: Podの名前やラベルなどのメタデータ。
spec: 実際の中身。どんなコンテナを動かすかを定義。
containers: Pod内で動かすコンテナのリスト。
image: 使用するDockerイメージ(ここでは nginx:latest)。
ports: コンテナが利用するポート。
🌍 クラスター内での動作イメージ
code:_
+-----------------------------+
| Control Plane |
| (管理・監視・スケジューラ) |
+-----------------------------+
↓
+-----------------------------+
| Worker Node 1 |
| └── Pod: my-nginx |
+-----------------------------+
Control Plane が「my-nginx Podをどのノードに置くか」を決定し、Worker Node 上でコンテナを実行します。
🔧 次のステップ(応用)
もしクラスター内で 複数のPodを管理 したい場合、Deployment を使います。
code:yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
これで同じ nginx Pod を3つ(replicas: 3)デプロイし、クラスター全体で冗長性を確保できます。
GPT-4.icon
クラスタのポイント
クラスタは1つの巨大なコンピュータのように振る舞う。
物理サーバー、仮想マシン、コンテナ上で動作可能。
分散システムなので、ノードが増えてもスケールしやすい
🔹 クラスタの情報を見る
→ クラスタのAPIサーバやDNSサービスのエンドポイントを表示
→ 現在のKubeconfigの内容を確認(クラスタやユーザー設定)
→ クラスタ内のノード一覧を表示
→ ノードの詳細情報を表示
🔹 クラスタのコンテキスト管理(複数クラスタを切り替える場合)
→ 定義済みのコンテキスト(クラスタとユーザーの組)を一覧表示
→ 現在使っているコンテキスト名を表示
→ 使用するクラスタ(コンテキスト)を切り替え
→ 新しいコンテキストを作成
🔹 認証・接続関連のチェック
→ クライアントとクラスタ(サーバー)のKubernetesバージョン確認
→ 新しいクラスタエントリを設定
→ 現在のコンテキストを解除
ちなみに、kubectl自体には、clusterの作成削除するコマンドはない
それはclusterのプロビジョニングツールで行う
https://gyazo.com/c9486ca2f66c76605769a8cd2625dfa6
https://gyazo.com/312098a6bd228100148795561b37562e